Улучшить эту документацию Просмотреть исходный код input[range]
- input в модуле ng
Обзор
Нативный элемент ввода диапазона со валидацией и преобразованием.
Модель для элемента ввода диапазона должна всегда быть Number.
IE9 и другие браузеры, не поддерживающие тип range, используют текстовый элемент ввода без каких-либо значений по умолчанию для min, max и step. При этом привязка к модели, валидация и парсинг чисел поддерживаются.
Браузеры, поддерживающие диапазон (последние Chrome, Safari, Firefox, Edge) обрабатывают input[range] таким образом, что элемент ввода никогда не может содержать недопустимое значение. Это означает:
- любое нечисловое значение устанавливается в
(max + min) / 2. - любое числовое значение, меньшее текущего минимального значения или большее текущего максимального значения, устанавливается соответственно на минимальное/максимальное значение.
- дополнительно, текущее
stepсоблюдается, поэтому используется ближайшее значение, удовлетворяющее шагу.
См. Спецификацию HTML по input[type=range] для получения дополнительной информации.
Это имеет следующие последствия для AngularJS:
Поскольку значение элемента всегда должно отражать текущее значение модели, элемент ввода диапазона установит связанное выражение ngModel в значение, установленное браузером для элемента ввода. Например, в следующем элементе ввода <input type="range" ng-model="model.value">, если приложение установит model.value = null, браузер установит значение ввода в '50'. AngularJS затем установит модель в 50, чтобы предотвратить рассогласование между значением ввода и значением модели.
Это означает, что модель для диапазона будет немедленно установлена в 50 после того, как ngModel будет инициализирована. Это также означает, что элемент ввода диапазона никогда не может иметь ошибку required.
Это влияет не только на изменения значения модели, но и на значения атрибутов min, max и step. Когда эти значения изменяются таким образом, что это заставит браузер изменить значение ввода, AngularJS также обновит значение модели.
Автоматическая корректировка значений также означает, что элемент ввода диапазона никогда не может иметь ошибок required, min или max.
Однако step в настоящее время полностью реализован только в Firefox. Другие браузеры имеют проблемы при динамическом изменении шага — они не правильно корректируют значение элемента, а вместо этого могут установить ошибку stepMismatch. В этом случае AngularJS установит ошибку step в элементе ввода и установит модель в undefined.
Обратите внимание, что input[range] несовместим с ngMax, ngMin и ngStep, потому что они не устанавливают атрибуты min и max, что означает, что браузер не будет автоматически корректировать значение ввода на основе их значений и всегда будет предполагать min = 0, max = 100 и step = 1.
Сведения о директиве
- Эта директива выполняется на уровне приоритета 0.
Использование
<input type="range"
ng-model="string"
[name="string"]
[min="string"]
[max="string"]
[step="string"]
[ng-change="expression"]
[ng-checked="expression"]> Аргументы
| Параметр | Тип | Подробности |
|---|---|---|
| ngModel | string | Присваиваемое выражение AngularJS для привязки к данным. |
| name (необязательно) | string | Имя свойства формы, в рамках которого элемент управления публикуется. |
| min (необязательно) | string | Устанавливает валидацию |
| max (необязательно) | string | Устанавливает валидацию |
| step (необязательно) | string | Устанавливает валидацию |
| ngChange (необязательно) | expression | Выражение AngularJS, которое выполняется при изменении значения ngModel из-за взаимодействия пользователя с элементом ввода. |
| ngChecked (необязательно) | expression | Если выражение истинно, то атрибут |
Примеры
Элемент ввода диапазона с атрибутами ngMin и ngMax
© 2010–2020 Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
https://code.angularjs.org/1.8.2/docs/api/ng/input/input%5Brange%5D